//app.js
App({
  onLaunch: function () {

    //获取设备顶部窗口的高度（不同设备窗口高度不一样，根据这个来设置自定义导航栏的高度）
    //这个最初我是在组件中获取，但是出现了一个问题，当第一次进入小程序时导航栏会把
    //页面内容盖住一部分,当打开调试重新进入时就没有问题，这个问题弄得我是莫名其妙
    //虽然最后解决了，但是花费了不少时间
    wx.getSystemInfo({
      success: (res) => {
        this.globalData.statusBarHeight = res.statusBarHeight
        this.globalData.realWindowWidth = res.windowWidth
        this.globalData.realWindowHeight = res.windowHeight
        var height
        var sysinfo = wx.getSystemInfoSync()
        var isiOS = sysinfo.system.indexOf('iOS') > -1
        if(isiOS){
          height = 44
        }else {
          height = 48
        }
        this.globalData.height = height
      }
    })
  },
  
  /**
   * 设置监听器
   */
  setWatcher(page,data, watch) { // 接收index.js传过来的data对象和watch对象
    Object.keys(watch).forEach(v => { // 将watch对象内的key遍历
      this.observe(page,data, v, watch[v]); // 监听data内的v属性，传入watch内对应函数以调用
    })
  },

  /**
   * 监听属性 并执行监听函数
   */
  observe(page, obj, key, watchFun) {
    var val = obj[key]; // 给该属性设默认值
    Object.defineProperty(obj, key, {
      configurable: true,
      enumerable: true,
      set: function (value) {
        val = value;
        watchFun(page,value, val); // 赋值(set)时，调用对应函数
      },
      get: function () {
        return val;
      }
    })
  },
  globalData: {
    statusBarHeight: 0,
    height: 0,
    realWindowWidth: 0,
    realWindowHeight: 0,
  }
})